import strRemove from '../../data/strRemove';

/** 【同步方法】将任意颜色值转换为Hex颜色值
 * @param color 颜色值字符串
 * @return Hex颜色值，如：'#000000'
 */
function colorHex(color = '') {
    
    // 初始化返回数据
    let data_return = '';
    
    // 移除字符串中的“空格”
    let str_color = strRemove(color, ' ');
    // 如果数据有效，才执行
    if (str_color)
    {
        // 如果传入的字符串是rgb格式
        if (/^(rgb|RGB)/.test(str_color))
        {
            // 分离出三原色对应数值
            let arr_color = str_color.match(/\((\S*)\)/)[1].split(",");
            // 初始化生成值
            let str_Hex = "#";
            // 循环三原色数组
            for (let i = 0; (i < arr_color.length && i < 3); i++)
            {
                // 转化为16进制数值
                let hex_16 = Number(arr_color[i]).toString(16);
                // 如果转换后长度小于等于1，那么补位0
                if (hex_16.length <= 1) { hex_16 = '0' + hex_16; }
                // 将转换后的值拼接到生成值
                str_Hex += hex_16;
            }
            // 最终返回值赋值
            data_return = str_Hex;
        }
        // 如果传入是16进制颜色值
        else if (/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(str_color))
        {
            // 分隔字符串为数组
            let arr_char = str_color.replace(/#/,"").split("");
            // 如果是6位长度，直接使用原值
            if (arr_char.length == 6) { data_return = str_color; }
            // 如果是3位长度
            else if (arr_char.length == 3)
            {
                // 初始化生成值
                let str_Hex = "#";
                // 循环分隔后的数组
                for (let i = 0; i < arr_char.length; i++)
                {
                    // 重复拼接每一个字符
                    str_Hex += arr_char[i].toString() + arr_char[i].toString();
                }
                // 最终返回值赋值
                data_return = str_Hex;
            }
        }
    }
    
    // 返回结果数据
    return data_return;
}

export default colorHex;